#!/bin/bash

# 语音情感识别系统停止脚本
# 功能：停止后端API服务和前端Web界面
# 使用方法：./stop.sh 或 bash stop.sh

echo "=========================================="
echo "🛑 语音情感识别系统停止脚本"
echo "=========================================="

# 从PID文件读取进程ID
if [ -f "logs/backend.pid" ]; then
    backend_pid=$(cat logs/backend.pid)
    echo "🔍 发现后端服务PID: $backend_pid"
    
    if ps -p $backend_pid > /dev/null; then
        echo "🛑 停止后端服务..."
        kill $backend_pid
        echo "✅ 后端服务已停止"
    else
        echo "⚠️  后端服务进程不存在"
    fi
    
    rm logs/backend.pid
else
    echo "⚠️  未找到后端服务PID文件"
fi

if [ -f "logs/frontend.pid" ]; then
    frontend_pid=$(cat logs/frontend.pid)
    echo "🔍 发现前端服务PID: $frontend_pid"
    
    if ps -p $frontend_pid > /dev/null; then
        echo "🛑 停止前端服务..."
        kill $frontend_pid
        echo "✅ 前端服务已停止"
    else
        echo "⚠️  前端服务进程不存在"
    fi
    
    rm logs/frontend.pid
else
    echo "⚠️  未找到前端服务PID文件"
fi

# 额外检查端口占用
echo ""
echo "🔍 检查端口占用情况..."

# 检查8000端口（后端）
if lsof -i:8000 > /dev/null 2>&1; then
    echo "⚠️  端口8000仍被占用，尝试强制停止..."
    # 更精确的进程查找和终止
    pkill -f "python.*run.py" || true
    pkill -f "uvicorn.*main:app" || true
    pkill -f "python.*main.py" || true
    # 使用 fuser 强制释放端口
    if command -v fuser &> /dev/null; then
        fuser -k 8000/tcp 2>/dev/null || true
    fi
fi

# 检查3000端口（前端）
if lsof -i:3000 > /dev/null 2>&1; then
    echo "⚠️  端口3000仍被占用，尝试强制停止..."
    pkill -f "next.*dev" || true
    pkill -f "node.*next" || true
    pkill -f "npm.*dev" || true
    # 使用 fuser 强制释放端口
    if command -v fuser &> /dev/null; then
        fuser -k 3000/tcp 2>/dev/null || true
    fi
fi

# 等待端口释放
echo "⏳ 等待端口释放..."
sleep 2

# 最终确认端口状态
if lsof -i:8000 > /dev/null 2>&1; then
    echo "⚠️  警告：端口8000仍被占用"
    echo "📋 占用端口8000的进程："
    lsof -i:8000 2>/dev/null || echo "无法查询进程信息"
fi

if lsof -i:3000 > /dev/null 2>&1; then
    echo "⚠️  警告：端口3000仍被占用"
    echo "📋 占用端口3000的进程："
    lsof -i:3000 2>/dev/null || echo "无法查询进程信息"
fi

echo ""
echo "=========================================="
echo "✅ 系统停止完成！"
echo "=========================================="
echo "🔍 如需确认服务已完全停止，可以检查："
echo "  - 后端: curl http://localhost:8000/health"
echo "  - 前端: curl http://localhost:3000"
echo ""
echo "📋 如需重新启动："
echo "  - 执行: ./start.sh"
echo "==========================================" 